{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Reproduce Leaf Counting\n",
    "# Keras Implementation of InceptionV3\n",
    "# Varun Aggarwal\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# ensures back compatibility\n",
    "from tensorflow.keras import backend as K\n",
    "\n",
    "\n",
    "# for reading and preprocessing data\n",
    "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
    "from tensorflow.keras.models import Model\n",
    "from tensorflow.keras.layers import Flatten, Dense, Dropout\n",
    "from tensorflow.keras.optimizers import Adam\n",
    "\n",
    "\n",
    "# inceptionv3 model from keras with pretrained weights\n",
    "from tensorflow.python.keras.applications.inception_v3 import InceptionV3, preprocess_input\n",
    "\n",
    "import tensorflow as tf\n",
    "\n",
    "\n",
    "# for plots et al.\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "from sklearn.metrics import classification_report, confusion_matrix\n",
    "\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sn\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# set these parameters\n",
    "\n",
    "dataset = 'LeafCount'\n",
    "modelName = 'InceptionV3'\n",
    "\n",
    "load_weights = True"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "DATASET_PATH  = '../dataset/'\n",
    "\n",
    "IMAGE_SIZE    = (256, 256)\n",
    "NUM_CLASSES   = 9  \n",
    "BATCH_SIZE    = 8\n",
    "NUM_EPOCHS    = 20\n",
    "WEIGHTS_FINAL = ''.join(['model-',modelName,'-',dataset,'.h5'])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Found 6175 images belonging to 9 classes.\n",
      "Found 681 images belonging to 9 classes.\n"
     ]
    }
   ],
   "source": [
    "# specify data augmentation parameters for training images\n",
    "train_datagen = ImageDataGenerator(preprocessing_function=preprocess_input,\n",
    "                                   rotation_range=30,\n",
    "                                   width_shift_range=0.2,\n",
    "                                   height_shift_range=0.2,\n",
    "                                   zoom_range=0.4,\n",
    "                                   horizontal_flip=True,\n",
    "                                   \n",
    "                                   fill_mode='nearest',\n",
    "                                   validation_split=0.1)\n",
    "train_batches = train_datagen.flow_from_directory(DATASET_PATH + '/train',\n",
    "                                                  target_size=IMAGE_SIZE,\n",
    "                                                  interpolation='bicubic',\n",
    "                                                  class_mode='categorical',\n",
    "                                                  shuffle=True,\n",
    "                                                  batch_size=BATCH_SIZE,\n",
    "                                                  subset=\"training\",\n",
    "                                                  classes=['1','2','3','4','5','6','7','8','9+'])\n",
    "\n",
    "valid_batches = train_datagen.flow_from_directory(DATASET_PATH + '/train',\n",
    "                                                  target_size=IMAGE_SIZE,\n",
    "                                                  interpolation='bicubic',\n",
    "                                                  class_mode='categorical',\n",
    "                                                  shuffle=True,\n",
    "                                                  batch_size=BATCH_SIZE,                                                                                         subset=\"validation\",\n",
    "                                                  classes=['1','2','3','4','5','6','7','8','9+'])\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "****************\n",
      "Class #0 = 1\n",
      "Class #1 = 2\n",
      "Class #2 = 3\n",
      "Class #3 = 4\n",
      "Class #4 = 5\n",
      "Class #5 = 6\n",
      "Class #6 = 7\n",
      "Class #7 = 8\n",
      "Class #8 = 9+\n",
      "****************\n"
     ]
    }
   ],
   "source": [
    "# show class indices\n",
    "\n",
    "\n",
    "print('****************')\n",
    "\n",
    "for cls, idx in train_batches.class_indices.items():\n",
    "    print('Class #{} = {}'.format(idx, cls))\n",
    "    \n",
    "print('****************')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# inceptionv3 - model setup\n",
    "\n",
    "model = InceptionV3(include_top=False,\n",
    "                    weights='imagenet',\n",
    "                    input_tensor=None,\n",
    "                    input_shape=(IMAGE_SIZE[0], IMAGE_SIZE[1], 3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# ResNet model from keras with pretrained weights\n",
    "\n",
    "\n",
    "from tensorflow.python.keras.applications.inception_resnet_v2 import InceptionResNetV2, preprocess_input\n",
    "# adding final FC layer at the end of model\n",
    "x = model.output\n",
    "x = Flatten()(x)\n",
    "x = Dropout(0.5)(x)\n",
    "output_layer = Dense( NUM_CLASSES,\n",
    "                      activation='softmax',                     \n",
    "                      name='softmax')(x)\n",
    "\n",
    "model = Model(inputs=model.input,\n",
    "              outputs=output_layer)\n",
    "\n",
    "\n",
    "\n",
    "# ensure all layers are trainable\n",
    "for layer in model.layers:\n",
    "    layer.trainable = True\n",
    "\n",
    "# setting up optimizer for model\n",
    "model.compile(optimizer=Adam(lr=1e-5),\n",
    "              loss='categorical_crossentropy',\n",
    "              metrics=['accuracy'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"model\"\n",
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "input_1 (InputLayer)            [(None, 256, 256, 3) 0                                            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d (Conv2D)                 (None, 127, 127, 32) 864         input_1[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization (BatchNorma (None, 127, 127, 32) 96          conv2d[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "activation (Activation)         (None, 127, 127, 32) 0           batch_normalization[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_1 (Conv2D)               (None, 125, 125, 32) 9216        activation[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_1 (BatchNor (None, 125, 125, 32) 96          conv2d_1[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "activation_1 (Activation)       (None, 125, 125, 32) 0           batch_normalization_1[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_2 (Conv2D)               (None, 125, 125, 64) 18432       activation_1[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_2 (BatchNor (None, 125, 125, 64) 192         conv2d_2[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "activation_2 (Activation)       (None, 125, 125, 64) 0           batch_normalization_2[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d (MaxPooling2D)    (None, 62, 62, 64)   0           activation_2[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_3 (Conv2D)               (None, 62, 62, 80)   5120        max_pooling2d[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_3 (BatchNor (None, 62, 62, 80)   240         conv2d_3[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "activation_3 (Activation)       (None, 62, 62, 80)   0           batch_normalization_3[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_4 (Conv2D)               (None, 60, 60, 192)  138240      activation_3[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_4 (BatchNor (None, 60, 60, 192)  576         conv2d_4[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "activation_4 (Activation)       (None, 60, 60, 192)  0           batch_normalization_4[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d_1 (MaxPooling2D)  (None, 29, 29, 192)  0           activation_4[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_8 (Conv2D)               (None, 29, 29, 64)   12288       max_pooling2d_1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_8 (BatchNor (None, 29, 29, 64)   192         conv2d_8[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "activation_8 (Activation)       (None, 29, 29, 64)   0           batch_normalization_8[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_6 (Conv2D)               (None, 29, 29, 48)   9216        max_pooling2d_1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_9 (Conv2D)               (None, 29, 29, 96)   55296       activation_8[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_6 (BatchNor (None, 29, 29, 48)   144         conv2d_6[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_9 (BatchNor (None, 29, 29, 96)   288         conv2d_9[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "activation_6 (Activation)       (None, 29, 29, 48)   0           batch_normalization_6[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "activation_9 (Activation)       (None, 29, 29, 96)   0           batch_normalization_9[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "average_pooling2d (AveragePooli (None, 29, 29, 192)  0           max_pooling2d_1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_5 (Conv2D)               (None, 29, 29, 64)   12288       max_pooling2d_1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_7 (Conv2D)               (None, 29, 29, 64)   76800       activation_6[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_10 (Conv2D)              (None, 29, 29, 96)   82944       activation_9[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_11 (Conv2D)              (None, 29, 29, 32)   6144        average_pooling2d[0][0]          \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_5 (BatchNor (None, 29, 29, 64)   192         conv2d_5[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_7 (BatchNor (None, 29, 29, 64)   192         conv2d_7[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_10 (BatchNo (None, 29, 29, 96)   288         conv2d_10[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_11 (BatchNo (None, 29, 29, 32)   96          conv2d_11[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_5 (Activation)       (None, 29, 29, 64)   0           batch_normalization_5[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "activation_7 (Activation)       (None, 29, 29, 64)   0           batch_normalization_7[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "activation_10 (Activation)      (None, 29, 29, 96)   0           batch_normalization_10[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_11 (Activation)      (None, 29, 29, 32)   0           batch_normalization_11[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "mixed0 (Concatenate)            (None, 29, 29, 256)  0           activation_5[0][0]               \n",
      "                                                                 activation_7[0][0]               \n",
      "                                                                 activation_10[0][0]              \n",
      "                                                                 activation_11[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_15 (Conv2D)              (None, 29, 29, 64)   16384       mixed0[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_15 (BatchNo (None, 29, 29, 64)   192         conv2d_15[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_15 (Activation)      (None, 29, 29, 64)   0           batch_normalization_15[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_13 (Conv2D)              (None, 29, 29, 48)   12288       mixed0[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_16 (Conv2D)              (None, 29, 29, 96)   55296       activation_15[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_13 (BatchNo (None, 29, 29, 48)   144         conv2d_13[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_16 (BatchNo (None, 29, 29, 96)   288         conv2d_16[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_13 (Activation)      (None, 29, 29, 48)   0           batch_normalization_13[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_16 (Activation)      (None, 29, 29, 96)   0           batch_normalization_16[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "average_pooling2d_1 (AveragePoo (None, 29, 29, 256)  0           mixed0[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_12 (Conv2D)              (None, 29, 29, 64)   16384       mixed0[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_14 (Conv2D)              (None, 29, 29, 64)   76800       activation_13[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_17 (Conv2D)              (None, 29, 29, 96)   82944       activation_16[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_18 (Conv2D)              (None, 29, 29, 64)   16384       average_pooling2d_1[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_12 (BatchNo (None, 29, 29, 64)   192         conv2d_12[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_14 (BatchNo (None, 29, 29, 64)   192         conv2d_14[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_17 (BatchNo (None, 29, 29, 96)   288         conv2d_17[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_18 (BatchNo (None, 29, 29, 64)   192         conv2d_18[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_12 (Activation)      (None, 29, 29, 64)   0           batch_normalization_12[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_14 (Activation)      (None, 29, 29, 64)   0           batch_normalization_14[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_17 (Activation)      (None, 29, 29, 96)   0           batch_normalization_17[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_18 (Activation)      (None, 29, 29, 64)   0           batch_normalization_18[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "mixed1 (Concatenate)            (None, 29, 29, 288)  0           activation_12[0][0]              \n",
      "                                                                 activation_14[0][0]              \n",
      "                                                                 activation_17[0][0]              \n",
      "                                                                 activation_18[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_22 (Conv2D)              (None, 29, 29, 64)   18432       mixed1[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_22 (BatchNo (None, 29, 29, 64)   192         conv2d_22[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_22 (Activation)      (None, 29, 29, 64)   0           batch_normalization_22[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_20 (Conv2D)              (None, 29, 29, 48)   13824       mixed1[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_23 (Conv2D)              (None, 29, 29, 96)   55296       activation_22[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_20 (BatchNo (None, 29, 29, 48)   144         conv2d_20[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_23 (BatchNo (None, 29, 29, 96)   288         conv2d_23[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_20 (Activation)      (None, 29, 29, 48)   0           batch_normalization_20[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_23 (Activation)      (None, 29, 29, 96)   0           batch_normalization_23[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "average_pooling2d_2 (AveragePoo (None, 29, 29, 288)  0           mixed1[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_19 (Conv2D)              (None, 29, 29, 64)   18432       mixed1[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_21 (Conv2D)              (None, 29, 29, 64)   76800       activation_20[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_24 (Conv2D)              (None, 29, 29, 96)   82944       activation_23[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_25 (Conv2D)              (None, 29, 29, 64)   18432       average_pooling2d_2[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_19 (BatchNo (None, 29, 29, 64)   192         conv2d_19[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_21 (BatchNo (None, 29, 29, 64)   192         conv2d_21[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_24 (BatchNo (None, 29, 29, 96)   288         conv2d_24[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_25 (BatchNo (None, 29, 29, 64)   192         conv2d_25[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_19 (Activation)      (None, 29, 29, 64)   0           batch_normalization_19[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_21 (Activation)      (None, 29, 29, 64)   0           batch_normalization_21[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_24 (Activation)      (None, 29, 29, 96)   0           batch_normalization_24[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_25 (Activation)      (None, 29, 29, 64)   0           batch_normalization_25[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "mixed2 (Concatenate)            (None, 29, 29, 288)  0           activation_19[0][0]              \n",
      "                                                                 activation_21[0][0]              \n",
      "                                                                 activation_24[0][0]              \n",
      "                                                                 activation_25[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_27 (Conv2D)              (None, 29, 29, 64)   18432       mixed2[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_27 (BatchNo (None, 29, 29, 64)   192         conv2d_27[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_27 (Activation)      (None, 29, 29, 64)   0           batch_normalization_27[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_28 (Conv2D)              (None, 29, 29, 96)   55296       activation_27[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_28 (BatchNo (None, 29, 29, 96)   288         conv2d_28[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_28 (Activation)      (None, 29, 29, 96)   0           batch_normalization_28[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_26 (Conv2D)              (None, 14, 14, 384)  995328      mixed2[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_29 (Conv2D)              (None, 14, 14, 96)   82944       activation_28[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_26 (BatchNo (None, 14, 14, 384)  1152        conv2d_26[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_29 (BatchNo (None, 14, 14, 96)   288         conv2d_29[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_26 (Activation)      (None, 14, 14, 384)  0           batch_normalization_26[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_29 (Activation)      (None, 14, 14, 96)   0           batch_normalization_29[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d_2 (MaxPooling2D)  (None, 14, 14, 288)  0           mixed2[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "mixed3 (Concatenate)            (None, 14, 14, 768)  0           activation_26[0][0]              \n",
      "                                                                 activation_29[0][0]              \n",
      "                                                                 max_pooling2d_2[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_34 (Conv2D)              (None, 14, 14, 128)  98304       mixed3[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_34 (BatchNo (None, 14, 14, 128)  384         conv2d_34[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_34 (Activation)      (None, 14, 14, 128)  0           batch_normalization_34[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_35 (Conv2D)              (None, 14, 14, 128)  114688      activation_34[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_35 (BatchNo (None, 14, 14, 128)  384         conv2d_35[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_35 (Activation)      (None, 14, 14, 128)  0           batch_normalization_35[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_31 (Conv2D)              (None, 14, 14, 128)  98304       mixed3[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_36 (Conv2D)              (None, 14, 14, 128)  114688      activation_35[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_31 (BatchNo (None, 14, 14, 128)  384         conv2d_31[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_36 (BatchNo (None, 14, 14, 128)  384         conv2d_36[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_31 (Activation)      (None, 14, 14, 128)  0           batch_normalization_31[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_36 (Activation)      (None, 14, 14, 128)  0           batch_normalization_36[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_32 (Conv2D)              (None, 14, 14, 128)  114688      activation_31[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_37 (Conv2D)              (None, 14, 14, 128)  114688      activation_36[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_32 (BatchNo (None, 14, 14, 128)  384         conv2d_32[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_37 (BatchNo (None, 14, 14, 128)  384         conv2d_37[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_32 (Activation)      (None, 14, 14, 128)  0           batch_normalization_32[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_37 (Activation)      (None, 14, 14, 128)  0           batch_normalization_37[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "average_pooling2d_3 (AveragePoo (None, 14, 14, 768)  0           mixed3[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_30 (Conv2D)              (None, 14, 14, 192)  147456      mixed3[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_33 (Conv2D)              (None, 14, 14, 192)  172032      activation_32[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_38 (Conv2D)              (None, 14, 14, 192)  172032      activation_37[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_39 (Conv2D)              (None, 14, 14, 192)  147456      average_pooling2d_3[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_30 (BatchNo (None, 14, 14, 192)  576         conv2d_30[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_33 (BatchNo (None, 14, 14, 192)  576         conv2d_33[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_38 (BatchNo (None, 14, 14, 192)  576         conv2d_38[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_39 (BatchNo (None, 14, 14, 192)  576         conv2d_39[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_30 (Activation)      (None, 14, 14, 192)  0           batch_normalization_30[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_33 (Activation)      (None, 14, 14, 192)  0           batch_normalization_33[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_38 (Activation)      (None, 14, 14, 192)  0           batch_normalization_38[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_39 (Activation)      (None, 14, 14, 192)  0           batch_normalization_39[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "mixed4 (Concatenate)            (None, 14, 14, 768)  0           activation_30[0][0]              \n",
      "                                                                 activation_33[0][0]              \n",
      "                                                                 activation_38[0][0]              \n",
      "                                                                 activation_39[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_44 (Conv2D)              (None, 14, 14, 160)  122880      mixed4[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_44 (BatchNo (None, 14, 14, 160)  480         conv2d_44[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_44 (Activation)      (None, 14, 14, 160)  0           batch_normalization_44[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_45 (Conv2D)              (None, 14, 14, 160)  179200      activation_44[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_45 (BatchNo (None, 14, 14, 160)  480         conv2d_45[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_45 (Activation)      (None, 14, 14, 160)  0           batch_normalization_45[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_41 (Conv2D)              (None, 14, 14, 160)  122880      mixed4[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_46 (Conv2D)              (None, 14, 14, 160)  179200      activation_45[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_41 (BatchNo (None, 14, 14, 160)  480         conv2d_41[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_46 (BatchNo (None, 14, 14, 160)  480         conv2d_46[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_41 (Activation)      (None, 14, 14, 160)  0           batch_normalization_41[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_46 (Activation)      (None, 14, 14, 160)  0           batch_normalization_46[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_42 (Conv2D)              (None, 14, 14, 160)  179200      activation_41[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_47 (Conv2D)              (None, 14, 14, 160)  179200      activation_46[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_42 (BatchNo (None, 14, 14, 160)  480         conv2d_42[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_47 (BatchNo (None, 14, 14, 160)  480         conv2d_47[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_42 (Activation)      (None, 14, 14, 160)  0           batch_normalization_42[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_47 (Activation)      (None, 14, 14, 160)  0           batch_normalization_47[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "average_pooling2d_4 (AveragePoo (None, 14, 14, 768)  0           mixed4[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_40 (Conv2D)              (None, 14, 14, 192)  147456      mixed4[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_43 (Conv2D)              (None, 14, 14, 192)  215040      activation_42[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_48 (Conv2D)              (None, 14, 14, 192)  215040      activation_47[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_49 (Conv2D)              (None, 14, 14, 192)  147456      average_pooling2d_4[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_40 (BatchNo (None, 14, 14, 192)  576         conv2d_40[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_43 (BatchNo (None, 14, 14, 192)  576         conv2d_43[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_48 (BatchNo (None, 14, 14, 192)  576         conv2d_48[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_49 (BatchNo (None, 14, 14, 192)  576         conv2d_49[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_40 (Activation)      (None, 14, 14, 192)  0           batch_normalization_40[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_43 (Activation)      (None, 14, 14, 192)  0           batch_normalization_43[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_48 (Activation)      (None, 14, 14, 192)  0           batch_normalization_48[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_49 (Activation)      (None, 14, 14, 192)  0           batch_normalization_49[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "mixed5 (Concatenate)            (None, 14, 14, 768)  0           activation_40[0][0]              \n",
      "                                                                 activation_43[0][0]              \n",
      "                                                                 activation_48[0][0]              \n",
      "                                                                 activation_49[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_54 (Conv2D)              (None, 14, 14, 160)  122880      mixed5[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_54 (BatchNo (None, 14, 14, 160)  480         conv2d_54[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_54 (Activation)      (None, 14, 14, 160)  0           batch_normalization_54[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_55 (Conv2D)              (None, 14, 14, 160)  179200      activation_54[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_55 (BatchNo (None, 14, 14, 160)  480         conv2d_55[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_55 (Activation)      (None, 14, 14, 160)  0           batch_normalization_55[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_51 (Conv2D)              (None, 14, 14, 160)  122880      mixed5[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_56 (Conv2D)              (None, 14, 14, 160)  179200      activation_55[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_51 (BatchNo (None, 14, 14, 160)  480         conv2d_51[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_56 (BatchNo (None, 14, 14, 160)  480         conv2d_56[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_51 (Activation)      (None, 14, 14, 160)  0           batch_normalization_51[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_56 (Activation)      (None, 14, 14, 160)  0           batch_normalization_56[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_52 (Conv2D)              (None, 14, 14, 160)  179200      activation_51[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_57 (Conv2D)              (None, 14, 14, 160)  179200      activation_56[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_52 (BatchNo (None, 14, 14, 160)  480         conv2d_52[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_57 (BatchNo (None, 14, 14, 160)  480         conv2d_57[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_52 (Activation)      (None, 14, 14, 160)  0           batch_normalization_52[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_57 (Activation)      (None, 14, 14, 160)  0           batch_normalization_57[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "average_pooling2d_5 (AveragePoo (None, 14, 14, 768)  0           mixed5[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_50 (Conv2D)              (None, 14, 14, 192)  147456      mixed5[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_53 (Conv2D)              (None, 14, 14, 192)  215040      activation_52[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_58 (Conv2D)              (None, 14, 14, 192)  215040      activation_57[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_59 (Conv2D)              (None, 14, 14, 192)  147456      average_pooling2d_5[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_50 (BatchNo (None, 14, 14, 192)  576         conv2d_50[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_53 (BatchNo (None, 14, 14, 192)  576         conv2d_53[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_58 (BatchNo (None, 14, 14, 192)  576         conv2d_58[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_59 (BatchNo (None, 14, 14, 192)  576         conv2d_59[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_50 (Activation)      (None, 14, 14, 192)  0           batch_normalization_50[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_53 (Activation)      (None, 14, 14, 192)  0           batch_normalization_53[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_58 (Activation)      (None, 14, 14, 192)  0           batch_normalization_58[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_59 (Activation)      (None, 14, 14, 192)  0           batch_normalization_59[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "mixed6 (Concatenate)            (None, 14, 14, 768)  0           activation_50[0][0]              \n",
      "                                                                 activation_53[0][0]              \n",
      "                                                                 activation_58[0][0]              \n",
      "                                                                 activation_59[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_64 (Conv2D)              (None, 14, 14, 192)  147456      mixed6[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_64 (BatchNo (None, 14, 14, 192)  576         conv2d_64[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_64 (Activation)      (None, 14, 14, 192)  0           batch_normalization_64[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_65 (Conv2D)              (None, 14, 14, 192)  258048      activation_64[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_65 (BatchNo (None, 14, 14, 192)  576         conv2d_65[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_65 (Activation)      (None, 14, 14, 192)  0           batch_normalization_65[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_61 (Conv2D)              (None, 14, 14, 192)  147456      mixed6[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_66 (Conv2D)              (None, 14, 14, 192)  258048      activation_65[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_61 (BatchNo (None, 14, 14, 192)  576         conv2d_61[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_66 (BatchNo (None, 14, 14, 192)  576         conv2d_66[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_61 (Activation)      (None, 14, 14, 192)  0           batch_normalization_61[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_66 (Activation)      (None, 14, 14, 192)  0           batch_normalization_66[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_62 (Conv2D)              (None, 14, 14, 192)  258048      activation_61[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_67 (Conv2D)              (None, 14, 14, 192)  258048      activation_66[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_62 (BatchNo (None, 14, 14, 192)  576         conv2d_62[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_67 (BatchNo (None, 14, 14, 192)  576         conv2d_67[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_62 (Activation)      (None, 14, 14, 192)  0           batch_normalization_62[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_67 (Activation)      (None, 14, 14, 192)  0           batch_normalization_67[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "average_pooling2d_6 (AveragePoo (None, 14, 14, 768)  0           mixed6[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_60 (Conv2D)              (None, 14, 14, 192)  147456      mixed6[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_63 (Conv2D)              (None, 14, 14, 192)  258048      activation_62[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_68 (Conv2D)              (None, 14, 14, 192)  258048      activation_67[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_69 (Conv2D)              (None, 14, 14, 192)  147456      average_pooling2d_6[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_60 (BatchNo (None, 14, 14, 192)  576         conv2d_60[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_63 (BatchNo (None, 14, 14, 192)  576         conv2d_63[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_68 (BatchNo (None, 14, 14, 192)  576         conv2d_68[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_69 (BatchNo (None, 14, 14, 192)  576         conv2d_69[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_60 (Activation)      (None, 14, 14, 192)  0           batch_normalization_60[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_63 (Activation)      (None, 14, 14, 192)  0           batch_normalization_63[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_68 (Activation)      (None, 14, 14, 192)  0           batch_normalization_68[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_69 (Activation)      (None, 14, 14, 192)  0           batch_normalization_69[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "mixed7 (Concatenate)            (None, 14, 14, 768)  0           activation_60[0][0]              \n",
      "                                                                 activation_63[0][0]              \n",
      "                                                                 activation_68[0][0]              \n",
      "                                                                 activation_69[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_72 (Conv2D)              (None, 14, 14, 192)  147456      mixed7[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_72 (BatchNo (None, 14, 14, 192)  576         conv2d_72[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_72 (Activation)      (None, 14, 14, 192)  0           batch_normalization_72[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_73 (Conv2D)              (None, 14, 14, 192)  258048      activation_72[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_73 (BatchNo (None, 14, 14, 192)  576         conv2d_73[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_73 (Activation)      (None, 14, 14, 192)  0           batch_normalization_73[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_70 (Conv2D)              (None, 14, 14, 192)  147456      mixed7[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_74 (Conv2D)              (None, 14, 14, 192)  258048      activation_73[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_70 (BatchNo (None, 14, 14, 192)  576         conv2d_70[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_74 (BatchNo (None, 14, 14, 192)  576         conv2d_74[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_70 (Activation)      (None, 14, 14, 192)  0           batch_normalization_70[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_74 (Activation)      (None, 14, 14, 192)  0           batch_normalization_74[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_71 (Conv2D)              (None, 6, 6, 320)    552960      activation_70[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_75 (Conv2D)              (None, 6, 6, 192)    331776      activation_74[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_71 (BatchNo (None, 6, 6, 320)    960         conv2d_71[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_75 (BatchNo (None, 6, 6, 192)    576         conv2d_75[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_71 (Activation)      (None, 6, 6, 320)    0           batch_normalization_71[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_75 (Activation)      (None, 6, 6, 192)    0           batch_normalization_75[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d_3 (MaxPooling2D)  (None, 6, 6, 768)    0           mixed7[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "mixed8 (Concatenate)            (None, 6, 6, 1280)   0           activation_71[0][0]              \n",
      "                                                                 activation_75[0][0]              \n",
      "                                                                 max_pooling2d_3[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_80 (Conv2D)              (None, 6, 6, 448)    573440      mixed8[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_80 (BatchNo (None, 6, 6, 448)    1344        conv2d_80[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_80 (Activation)      (None, 6, 6, 448)    0           batch_normalization_80[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_77 (Conv2D)              (None, 6, 6, 384)    491520      mixed8[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_81 (Conv2D)              (None, 6, 6, 384)    1548288     activation_80[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_77 (BatchNo (None, 6, 6, 384)    1152        conv2d_77[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_81 (BatchNo (None, 6, 6, 384)    1152        conv2d_81[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_77 (Activation)      (None, 6, 6, 384)    0           batch_normalization_77[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_81 (Activation)      (None, 6, 6, 384)    0           batch_normalization_81[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_78 (Conv2D)              (None, 6, 6, 384)    442368      activation_77[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_79 (Conv2D)              (None, 6, 6, 384)    442368      activation_77[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_82 (Conv2D)              (None, 6, 6, 384)    442368      activation_81[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_83 (Conv2D)              (None, 6, 6, 384)    442368      activation_81[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "average_pooling2d_7 (AveragePoo (None, 6, 6, 1280)   0           mixed8[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_76 (Conv2D)              (None, 6, 6, 320)    409600      mixed8[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_78 (BatchNo (None, 6, 6, 384)    1152        conv2d_78[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_79 (BatchNo (None, 6, 6, 384)    1152        conv2d_79[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_82 (BatchNo (None, 6, 6, 384)    1152        conv2d_82[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_83 (BatchNo (None, 6, 6, 384)    1152        conv2d_83[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_84 (Conv2D)              (None, 6, 6, 192)    245760      average_pooling2d_7[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_76 (BatchNo (None, 6, 6, 320)    960         conv2d_76[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_78 (Activation)      (None, 6, 6, 384)    0           batch_normalization_78[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_79 (Activation)      (None, 6, 6, 384)    0           batch_normalization_79[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_82 (Activation)      (None, 6, 6, 384)    0           batch_normalization_82[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_83 (Activation)      (None, 6, 6, 384)    0           batch_normalization_83[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_84 (BatchNo (None, 6, 6, 192)    576         conv2d_84[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_76 (Activation)      (None, 6, 6, 320)    0           batch_normalization_76[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "mixed9_0 (Concatenate)          (None, 6, 6, 768)    0           activation_78[0][0]              \n",
      "                                                                 activation_79[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "concatenate (Concatenate)       (None, 6, 6, 768)    0           activation_82[0][0]              \n",
      "                                                                 activation_83[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "activation_84 (Activation)      (None, 6, 6, 192)    0           batch_normalization_84[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "mixed9 (Concatenate)            (None, 6, 6, 2048)   0           activation_76[0][0]              \n",
      "                                                                 mixed9_0[0][0]                   \n",
      "                                                                 concatenate[0][0]                \n",
      "                                                                 activation_84[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_89 (Conv2D)              (None, 6, 6, 448)    917504      mixed9[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_89 (BatchNo (None, 6, 6, 448)    1344        conv2d_89[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_89 (Activation)      (None, 6, 6, 448)    0           batch_normalization_89[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_86 (Conv2D)              (None, 6, 6, 384)    786432      mixed9[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_90 (Conv2D)              (None, 6, 6, 384)    1548288     activation_89[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_86 (BatchNo (None, 6, 6, 384)    1152        conv2d_86[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_90 (BatchNo (None, 6, 6, 384)    1152        conv2d_90[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_86 (Activation)      (None, 6, 6, 384)    0           batch_normalization_86[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_90 (Activation)      (None, 6, 6, 384)    0           batch_normalization_90[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_87 (Conv2D)              (None, 6, 6, 384)    442368      activation_86[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_88 (Conv2D)              (None, 6, 6, 384)    442368      activation_86[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_91 (Conv2D)              (None, 6, 6, 384)    442368      activation_90[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_92 (Conv2D)              (None, 6, 6, 384)    442368      activation_90[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "average_pooling2d_8 (AveragePoo (None, 6, 6, 2048)   0           mixed9[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_85 (Conv2D)              (None, 6, 6, 320)    655360      mixed9[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_87 (BatchNo (None, 6, 6, 384)    1152        conv2d_87[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_88 (BatchNo (None, 6, 6, 384)    1152        conv2d_88[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_91 (BatchNo (None, 6, 6, 384)    1152        conv2d_91[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_92 (BatchNo (None, 6, 6, 384)    1152        conv2d_92[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_93 (Conv2D)              (None, 6, 6, 192)    393216      average_pooling2d_8[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_85 (BatchNo (None, 6, 6, 320)    960         conv2d_85[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_87 (Activation)      (None, 6, 6, 384)    0           batch_normalization_87[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_88 (Activation)      (None, 6, 6, 384)    0           batch_normalization_88[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_91 (Activation)      (None, 6, 6, 384)    0           batch_normalization_91[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "activation_92 (Activation)      (None, 6, 6, 384)    0           batch_normalization_92[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_93 (BatchNo (None, 6, 6, 192)    576         conv2d_93[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_85 (Activation)      (None, 6, 6, 320)    0           batch_normalization_85[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "mixed9_1 (Concatenate)          (None, 6, 6, 768)    0           activation_87[0][0]              \n",
      "                                                                 activation_88[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "concatenate_1 (Concatenate)     (None, 6, 6, 768)    0           activation_91[0][0]              \n",
      "                                                                 activation_92[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "activation_93 (Activation)      (None, 6, 6, 192)    0           batch_normalization_93[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "mixed10 (Concatenate)           (None, 6, 6, 2048)   0           activation_85[0][0]              \n",
      "                                                                 mixed9_1[0][0]                   \n",
      "                                                                 concatenate_1[0][0]              \n",
      "                                                                 activation_93[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "flatten (Flatten)               (None, 73728)        0           mixed10[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "dropout (Dropout)               (None, 73728)        0           flatten[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "softmax (Dense)                 (None, 9)            663561      dropout[0][0]                    \n",
      "==================================================================================================\n",
      "Total params: 22,466,345\n",
      "Trainable params: 22,431,913\n",
      "Non-trainable params: 34,432\n",
      "__________________________________________________________________________________________________\n",
      "None\n"
     ]
    }
   ],
   "source": [
    "print(model.summary())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# load saved weights\n",
    "# if load_weights:\n",
    "model.load_weights(WEIGHTS_FINAL)\n",
    "\n",
    "    \n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/20\n",
      "771/771 [==============================] - 304s 394ms/step - loss: 2.1003 - accuracy: 0.3097 - val_loss: 1.5881 - val_accuracy: 0.4338\n",
      "Epoch 2/20\n",
      "771/771 [==============================] - 302s 391ms/step - loss: 1.6788 - accuracy: 0.4120 - val_loss: 1.3771 - val_accuracy: 0.5118\n",
      "Epoch 3/20\n",
      "771/771 [==============================] - 302s 392ms/step - loss: 1.5356 - accuracy: 0.4545 - val_loss: 1.3060 - val_accuracy: 0.5426\n",
      "Epoch 4/20\n",
      "771/771 [==============================] - 300s 390ms/step - loss: 1.4373 - accuracy: 0.4761 - val_loss: 1.2300 - val_accuracy: 0.5441\n",
      "Epoch 5/20\n",
      "771/771 [==============================] - 300s 389ms/step - loss: 1.3575 - accuracy: 0.5129 - val_loss: 1.1430 - val_accuracy: 0.5912\n",
      "Epoch 6/20\n",
      "771/771 [==============================] - 302s 392ms/step - loss: 1.3172 - accuracy: 0.5221 - val_loss: 1.1300 - val_accuracy: 0.6000\n",
      "Epoch 7/20\n",
      "771/771 [==============================] - 304s 394ms/step - loss: 1.2623 - accuracy: 0.5426 - val_loss: 1.0813 - val_accuracy: 0.6132\n",
      "Epoch 8/20\n",
      "771/771 [==============================] - 304s 394ms/step - loss: 1.2325 - accuracy: 0.5541 - val_loss: 1.0494 - val_accuracy: 0.6235\n",
      "Epoch 9/20\n",
      "771/771 [==============================] - 305s 396ms/step - loss: 1.1798 - accuracy: 0.5641 - val_loss: 1.0361 - val_accuracy: 0.6235\n",
      "Epoch 10/20\n",
      "771/771 [==============================] - 304s 394ms/step - loss: 1.1431 - accuracy: 0.5815 - val_loss: 1.0455 - val_accuracy: 0.6235\n",
      "Epoch 11/20\n",
      "771/771 [==============================] - 303s 393ms/step - loss: 1.1319 - accuracy: 0.5834 - val_loss: 1.0091 - val_accuracy: 0.6412\n",
      "Epoch 12/20\n",
      "771/771 [==============================] - 304s 395ms/step - loss: 1.1010 - accuracy: 0.5920 - val_loss: 1.0066 - val_accuracy: 0.6324\n",
      "Epoch 13/20\n",
      "771/771 [==============================] - 305s 395ms/step - loss: 1.0775 - accuracy: 0.6053 - val_loss: 0.9896 - val_accuracy: 0.6426\n",
      "Epoch 14/20\n",
      "771/771 [==============================] - 317s 411ms/step - loss: 1.0500 - accuracy: 0.6086 - val_loss: 0.9840 - val_accuracy: 0.6294\n",
      "Epoch 15/20\n",
      "771/771 [==============================] - 303s 393ms/step - loss: 1.0253 - accuracy: 0.6175 - val_loss: 0.9510 - val_accuracy: 0.6544\n",
      "Epoch 16/20\n",
      "771/771 [==============================] - 305s 395ms/step - loss: 0.9862 - accuracy: 0.6371 - val_loss: 0.9665 - val_accuracy: 0.6338\n",
      "Epoch 17/20\n",
      "771/771 [==============================] - 303s 393ms/step - loss: 0.9911 - accuracy: 0.6374 - val_loss: 0.9489 - val_accuracy: 0.6559\n",
      "Epoch 18/20\n",
      "771/771 [==============================] - 302s 392ms/step - loss: 0.9621 - accuracy: 0.6467 - val_loss: 0.9547 - val_accuracy: 0.6368\n",
      "Epoch 19/20\n",
      "771/771 [==============================] - 301s 391ms/step - loss: 0.9371 - accuracy: 0.6540 - val_loss: 0.9389 - val_accuracy: 0.6559\n",
      "Epoch 20/20\n",
      "771/771 [==============================] - 303s 393ms/step - loss: 0.9083 - accuracy: 0.6601 - val_loss: 0.9282 - val_accuracy: 0.6485\n"
     ]
    }
   ],
   "source": [
    "# train the model\n",
    "hist = model.fit_generator(train_batches,\n",
    "                    steps_per_epoch = train_batches.samples // BATCH_SIZE,\n",
    "                    validation_data = valid_batches,\n",
    "                    validation_steps = valid_batches.samples // BATCH_SIZE,\n",
    "                    epochs = NUM_EPOCHS)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "# save trained weights\n",
    "model.save(WEIGHTS_FINAL)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEaCAYAAADg2nttAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nOzdeXhTVfrA8e9N0j0tbVpoWlq2UpayCmVfS1EYZAAFlUFn2ISf4ggyjguK44qiKOrMOCqKuOAoIsqIymKRFrAUylIoO6UtUOhC13Rfcs/vj0gkFmjplhTO53n6PL33npvzJk3z5p5z7jmKEEIgSZIkSdegsXcAkiRJkuOTyUKSJEmqkUwWkiRJUo1kspAkSZJqJJOFJEmSVCOZLCRJkqQayWThYI4fP46iKOzdu/e6zjMajbz++uuNFFXjKCoqQlEU1q9fb93n5+fHW2+9dc3zpkyZwqRJk+pd//fff4+iKOTn59f7sSTpRieTxXVSFOWaP+3atavX44eGhpKenk7v3r2v67zExETmzZtXr7qv5d1332XQoEGMGTOG4cOHX7FMcXExXl5evPTSS3Wu5+jRo8ydO7fO519JWVkZiqLw9ddf2+y/9dZbSU9Pp0WLFg1a37UkJSWh0+kICQlB3uLUuMLDw63/l87OzgQEBHDbbbexcuVKzGbzdT1WXb/ENYRNmzahKArZ2dlNXvflZLK4Tunp6dafdevWAbB//37rvvj4+CueV1FRUavH12q1GI1GdDrddcXVsmVL3N3dr+uc6/Htt99y5513MnfuXHbs2MHx48erlfnyyy8pLS1l1qxZda6nVatWjfo8Lufi4oLRaERRlCapD2DFihVMmzYNs9lMVFRUk9V7LbV9bzZHc+bMIT09nZSUFDZs2MDIkSNZuHAht912G+Xl5fYOr3kRUp1t27ZNAOLcuXPVjvn7+4vnnntOzJkzR/j4+Ijhw4cLIYRYtmyZ6NGjh3B3dxcBAQHi3nvvFZmZmdbzjh07JgARHx9vs71u3ToxduxY4ebmJkJCQsTnn39erb5ly5bZbL/00kti3rx5okWLFsLf3188/vjjwmw2W8sUFRWJmTNnCk9PT+Hj4yMefvhh8be//U1069bN5rFzc3OFk5OTOHXqlKioqBBGo1E8+uij1Z7zgAEDxKRJk6zbH330kejbt6/w9PQUfn5+YsKECSI5Odl6vLCwUADi22+/te7z9fUVb775pnU7MzNT3HHHHcLNzU0YjUbx0ksvicmTJ4uJEyday3z33XdiyJAhwtvbW3h7e4tRo0aJAwcO2DwmYP3x8PAQQgixYcMGAYi8vDxr2ZiYGDFo0CDh4uIiDAaDmD59usjNzbUef/TRR0WvXr3El19+KUJCQoSHh4cYPXq0SE1NrfZ6/F55eblo2bKl+Pnnn8XixYvFlClTqpUpKysTTz31lGjXrp1wdnYWQUFB4vHHH7cez8/PF/PmzROBgYHC2dlZdOjQQSxfvlwIIURiYqIAbJ67ELbvjUuv+XvvvScmT54s9Hq9mDVrlhBCiIULF4pOnToJV1dX0aZNGzF//nxRVFRk81ixsbEiMjJSeHh4CL1eLwYOHCgSEhKsdR88eNCm/A8//CCcnJxs3uO/t27dOtGzZ0/h7Ows/P39xYIFC0Rpaan1+KW/99tvvy2CgoKEl5eXmDx5ssjJybnm6923b1+xYMGCavvj4uKEoiji9ddft+671nv10mt2+c+l/5Hjx4+LCRMmCH9/f+Hu7i569eolvvrqK5v6oqKiRP/+/YWHh4fw9PQUt9xyi4iJibEeT0tLE9OmTRMGg0F4enqK4cOHi127dgkhfvubXv5z++23X/N5NxZ5ZdGI3njjDdq1a8fu3bt5//33AUsz1ltvvcXhw4dZu3YtJ0+e5M9//nONj/XEE08wZ84cDh06xKRJk5gxYwapqak11t+hQwfi4+NZvnw5r7/+Ol988YX1+MKFC9m8eTNffvklsbGxODk58eGHH1Z7nO+//54uXbrQsWNHnJycmDlzJp988onNN9LExER2795t04RUUVHBiy++SEJCAhs3bqS0tJSJEydeVxPAvffey/Hjx9m0aRNbtmxh//79bNmyxaZMSUkJf/vb39izZw/bt28nICCAP/zhDxQWFgJw4MABAD744APS09NJTk6+Yl1nzpxhzJgxdO3alX379vH111+za9cupk2bZlPu9OnTrF69mq+//prt27eTnp7OAw88UONz+fbbb/Hw8GDkyJFMnz6d7777jszMTJsy06ZNY9WqVSxdupSjR4+yZs0agoKCADCbzdx2221s3bqVFStWcOzYMT788EO8vb1r92Je5plnnuG2227j4MGDLFq0CAAvLy8++ugjjh07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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot Results\n",
    "\n",
    "N=NUM_EPOCHS\n",
    "\n",
    "plt.style.use(\"ggplot\")\n",
    "plt.figure()\n",
    "plt.plot(np.arange(0, N), hist.history[\"loss\"], label=\"train_loss\")\n",
    "plt.plot(np.arange(0, N), hist.history[\"val_loss\"], label=\"val_loss\")\n",
    "\n",
    "plt.title(\"Training/Validation Loss on Dataset\")\n",
    "plt.xlabel(\"Epoch #\")\n",
    "plt.ylabel(\"Loss\")\n",
    "plt.legend(loc=\"lower left\")\n",
    "\n",
    "plt.savefig(\"plot_loss.png\")\n",
    "\n",
    "plt.figure()\n",
    "plt.plot(np.arange(0, N), hist.history[\"accuracy\"], label=\"train_acc\")\n",
    "plt.plot(np.arange(0, N), hist.history[\"val_accuracy\"], label=\"val_acc\")\n",
    "\n",
    "plt.title(\"Training/Validation Accuracy on Dataset\")\n",
    "plt.xlabel(\"Epoch #\")\n",
    "plt.ylabel(\"Accuracy\")\n",
    "plt.legend(loc=\"lower left\")\n",
    "plt.savefig(\"plot.png\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Found 2516 images belonging to 9 classes.\n"
     ]
    }
   ],
   "source": [
    "# test model\n",
    "\n",
    "test_datagen = ImageDataGenerator(preprocessing_function=preprocess_input)\n",
    "test_batches = test_datagen.flow_from_directory(DATASET_PATH + '/test',\n",
    "                                                  target_size=IMAGE_SIZE,\n",
    "                                                  interpolation='bicubic',\n",
    "                                                \n",
    "                                                  class_mode='categorical',\n",
    "                                                  shuffle=False,\n",
    "                                                  batch_size=1,\n",
    "                                                  classes=['1','2','3','4','5','6','7','8','9+'])\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# out = model.evaluate_generator(test_batches, use_multiprocessing=True)\n",
    "# print(list(zip(model.metrics_names,out)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_batches.reset()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "Y_pred = model.predict_generator(test_batches, use_multiprocessing=True)\n",
    "# print(len(Y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      " Classification Report\n",
      "\n",
      "['1', '2', '3', '4', '5', '6', '7', '8', '9+']\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           1       0.76      0.91      0.83       225\n",
      "           2       0.91      0.82      0.86      1096\n",
      "           3       0.47      0.32      0.38       234\n",
      "           4       0.61      0.75      0.67       519\n",
      "           5       0.35      0.23      0.28       127\n",
      "           6       0.34      0.47      0.39       133\n",
      "           7       0.25      0.06      0.10        33\n",
      "           8       0.00      0.00      0.00        33\n",
      "          9+       0.48      0.74      0.58       116\n",
      "\n",
      "    accuracy                           0.70      2516\n",
      "   macro avg       0.46      0.48      0.46      2516\n",
      "weighted avg       0.70      0.70      0.69      2516\n",
      "\n",
      "\n",
      "\n",
      "Confusion Matrix\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_pred = np.argmax(Y_pred, axis=1)\n",
    "\n",
    "print('\\n\\n Classification Report\\n')\n",
    "target_names = list(test_batches.class_indices.keys())\n",
    "print(target_names)\n",
    "print(classification_report(list(test_batches.classes), y_pred, target_names=target_names))\n",
    "\n",
    "\n",
    "\n",
    "print('\\n\\nConfusion Matrix\\n')\n",
    "\n",
    "cm = confusion_matrix(test_batches.classes, y_pred)\n",
    "\n",
    "row_sums = cm.sum(axis=1)\n",
    "cm = cm / row_sums\n",
    "\n",
    "# df_cm = pd.DataFrame(cm, index = ['cocklebur','foxtail','pigweed','ragweed'], columns = ['cocklebur','foxtail','pigweed','ragweed'])\n",
    "\n",
    "df_cm = pd.DataFrame(cm)\n",
    "# print(df_cm)\n",
    "\n",
    "\n",
    "# flights = df_cm.pivot(\"month\", \"year\", \"passengers\")\n",
    "\n",
    "\n",
    "plt.figure(figsize = (5,5))\n",
    "\n",
    "plt.title(modelName)\n",
    "sn.heatmap(df_cm, annot=True, fmt='0.0%', cbar=False, \n",
    "           xticklabels=['1','2','3','4','5','6','7','8','9+'],\n",
    "           yticklabels=['1','2','3','4','5','6','7','8','9+'])\n",
    "\n",
    "\n",
    "saveName = ''.join([modelName,'-',dataset,'.png'])\n",
    "plt.savefig(saveName)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.5"
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "position": {
    "height": "144.427px",
    "left": "1378.32px",
    "right": "20px",
    "top": "122.997px",
    "width": "350px"
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
